/**
 * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
 */
package com.jeesite.modules.base.entity.investorfinancialinfo;

import com.jeesite.common.collect.ListUtils;
import com.jeesite.common.entity.DataEntity;
import com.jeesite.common.mybatis.annotation.Column;
import com.jeesite.common.mybatis.annotation.JoinTable;
import com.jeesite.common.mybatis.annotation.Table;
import com.jeesite.common.mybatis.mapper.query.QueryType;
import com.jeesite.modules.base.entity.supplier.Supplier;
import com.jeesite.modules.sys.entity.User;
import org.hibernate.validator.constraints.Length;

import java.util.List;

/**
 * 资方金融费率维护Entity
 *
 * @author LV
 * @version 2021-03-03
 */
@Table(name = "t_investor_financial_info", alias = "a", columns = {
        @Column(name = "investor_financial_info_id", attrName = "investorFinancialInfoId", label = "资方金融费率ID", queryType = QueryType.LIKE, isPK = true),
        @Column(name = "investor_name", attrName = "investorName", label = "资方名称"),
        @Column(name = "days", attrName = "days", label = "资方年天数"),
        @Column(name = "remarks", attrName = "remarks", label = "备注信息", isQuery = false),
        @Column(name = "financing_type", attrName = "financingType", label = "单据类型"),
        @Column(name = "padtax_type", attrName = "padtaxType", label = "垫税方式"),
        @Column(name = "financing_method", attrName = "financingMethod", label = "融资方式"),
        @Column(name = "group_name", attrName = "groupName", label = "组合名称", queryType = QueryType.LIKE),
        @Column(name = "create_by", attrName = "createBy", label = "创建者", isUpdate = false),
        @Column(name = "create_date", attrName = "createDate", label = "创建时间", isUpdate = false),
        @Column(name = "update_by", attrName = "updateBy", label = "更新者", isQuery = false),
        @Column(name = "update_date", attrName = "updateDate", label = "更新时间", isQuery = false),
}, joinTable = {
        @JoinTable(type = JoinTable.Type.LEFT_JOIN, entity = Supplier.class, attrName = "supplier", alias = "b",
                on = "b.supplier_id = a.investor_name",
                columns = {
                        @Column(name = "supplier_id", label = "供应商编号", isPK = true),
                        @Column(name = "supplier_name", label = "供应商名称"),
                }),
        @JoinTable(type = JoinTable.Type.LEFT_JOIN, entity = User.class, attrName = "createByUser", alias = "createby",
                on = "createby.user_code = a.create_by", columns = {
                @Column(name = "user_code", label = "用户编码", isPK = true),
                @Column(name = "user_name", label = "用户名称", isQuery = false),
        }),
        @JoinTable(type = JoinTable.Type.LEFT_JOIN, entity = User.class, attrName = "updateByUser", alias = "updateby",
                on = "updateby.user_code = a.update_by", columns = {
                @Column(name = "user_code", label = "用户编码", isPK = true),
                @Column(name = "user_name", label = "用户名称", isQuery = false),
        }),
}, orderBy = "a.update_date DESC"
)
public class InvestorFinancialInfo extends DataEntity < InvestorFinancialInfo > {

    private static final long serialVersionUID = 1L;
    private String investorFinancialInfoId;        // 资方金融费率ID
    private String investorName;        // 资方名称
    private String financingType; // 单据类型   1基础信息 2押汇 3垫税 4国内融资
    private String padtaxType;        // 垫税方式（1关税 2现金 3保函 4舶来车）
    private String financingMethod;        // 融资方式
    private String groupName;        // 组合名称
    private Long days;        // 资方年天数
    private Supplier supplier;
    private List < LcFinancialRatio > lcFinancialRatioList = ListUtils.newArrayList();        // 子表列表 LC
    private List < TtFinancialRatio > ttFinancialRatioList = ListUtils.newArrayList();        // 子表列表 TT

    private List < NegotiatedInterest > negotiatedInterestList = ListUtils.newArrayList();        // 子表列表 押汇
    private List < NegotiatedInterest > negotiatedInterestList1 = ListUtils.newArrayList();        // 子表列表 押汇1资方
    private List < NegotiatedInterest > negotiatedInterestList2 = ListUtils.newArrayList();        // 子表列表 押汇2客户

    private List < PadTaxInterest > padTaxInterestList = ListUtils.newArrayList();        // 子表列表 垫税
    private List < PadTaxInterest > padTaxInterestList1 = ListUtils.newArrayList();        // 子表列表 垫税1 关税、现金、舶来车--资方
    private List < PadTaxInterest > padTaxInterestList2 = ListUtils.newArrayList();        // 子表列表 垫税2 关税、现金、舶来车--客户
    private List < PadTaxInterest > padTaxInterestList3 = ListUtils.newArrayList();        // 子表列表 垫税3 国内融资--资方
    private List < PadTaxInterest > padTaxInterestList4 = ListUtils.newArrayList();        // 子表列表 垫税4 国内融资--客户
    private User createByUser;
    private User updateByUser;


    public InvestorFinancialInfo() {
        this(null);
    }

    public InvestorFinancialInfo(String id) {
        super(id);
    }

    public String getInvestorFinancialInfoId() {
        return investorFinancialInfoId;
    }

    public void setInvestorFinancialInfoId(String investorFinancialInfoId) {
        this.investorFinancialInfoId = investorFinancialInfoId;
    }

    @Length(min = 0, max = 100, message = "资方名称长度不能超过 100 个字符")
    public String getInvestorName() {
        return investorName;
    }

    public void setInvestorName(String investorName) {
        this.investorName = investorName;
    }

    public Long getDays() {
        return days;
    }

    public void setDays(Long days) {
        this.days = days;
    }

    public List < LcFinancialRatio > getLcFinancialRatioList() {
        return lcFinancialRatioList;
    }

    public void setLcFinancialRatioList(List < LcFinancialRatio > lcFinancialRatioList) {
        this.lcFinancialRatioList = lcFinancialRatioList;
    }

    public List < TtFinancialRatio > getTtFinancialRatioList() {
        return ttFinancialRatioList;
    }

    public void setTtFinancialRatioList(List < TtFinancialRatio > ttFinancialRatioList) {
        this.ttFinancialRatioList = ttFinancialRatioList;
    }

    public List < NegotiatedInterest > getNegotiatedInterestList() {
        return negotiatedInterestList;
    }

    public void setNegotiatedInterestList(List < NegotiatedInterest > negotiatedInterestList) {
        this.negotiatedInterestList = negotiatedInterestList;
    }

    public List < PadTaxInterest > getPadTaxInterestList() {
        return padTaxInterestList;
    }

    public void setPadTaxInterestList(List < PadTaxInterest > padTaxInterestList) {
        this.padTaxInterestList = padTaxInterestList;
    }

    public List < NegotiatedInterest > getNegotiatedInterestList1() {
        return negotiatedInterestList1;
    }

    public void setNegotiatedInterestList1(List < NegotiatedInterest > negotiatedInterestList1) {
        this.negotiatedInterestList1 = negotiatedInterestList1;
    }

    public List < NegotiatedInterest > getNegotiatedInterestList2() {
        return negotiatedInterestList2;
    }

    public void setNegotiatedInterestList2(List < NegotiatedInterest > negotiatedInterestList2) {
        this.negotiatedInterestList2 = negotiatedInterestList2;
    }

    public List < PadTaxInterest > getPadTaxInterestList1() {
        return padTaxInterestList1;
    }

    public void setPadTaxInterestList1(List < PadTaxInterest > padTaxInterestList1) {
        this.padTaxInterestList1 = padTaxInterestList1;
    }

    public List < PadTaxInterest > getPadTaxInterestList2() {
        return padTaxInterestList2;
    }

    public void setPadTaxInterestList2(List < PadTaxInterest > padTaxInterestList2) {
        this.padTaxInterestList2 = padTaxInterestList2;
    }

    public List < PadTaxInterest > getPadTaxInterestList3() {
        return padTaxInterestList3;
    }

    public void setPadTaxInterestList3(List < PadTaxInterest > padTaxInterestList3) {
        this.padTaxInterestList3 = padTaxInterestList3;
    }

    public List < PadTaxInterest > getPadTaxInterestList4() {
        return padTaxInterestList4;
    }

    public void setPadTaxInterestList4(List < PadTaxInterest > padTaxInterestList4) {
        this.padTaxInterestList4 = padTaxInterestList4;
    }

    public Supplier getSupplier() {
        return supplier;
    }

    public void setSupplier(Supplier supplier) {
        this.supplier = supplier;
    }

    public String getGroupName() {
        return groupName;
    }

    public void setGroupName(String groupName) {
        this.groupName = groupName;
    }

    public String getFinancingType() {
        return financingType;
    }

    public void setFinancingType(String financingType) {
        this.financingType = financingType;
    }

    public String getPadtaxType() {
        return padtaxType;
    }

    public void setPadtaxType(String padtaxType) {
        this.padtaxType = padtaxType;
    }

    public String getFinancingMethod() {
        return financingMethod;
    }

    public void setFinancingMethod(String financingMethod) {
        this.financingMethod = financingMethod;
    }

    public User getCreateByUser() {
        return createByUser;
    }

    public void setCreateByUser(User createByUser) {
        this.createByUser = createByUser;
    }

    public User getUpdateByUser() {
        return updateByUser;
    }

    public void setUpdateByUser(User updateByUser) {
        this.updateByUser = updateByUser;
    }
}